
function add(a){
  return function(b){
    return function (c){
      return a + b + c;
    }
  }
}

// const result = add(1)(2)(3) // 6 
// console.log(result)

// 函数柯里化
// 函数柯里化的意思是将多个参数的函数变成一个参数的函数
function beforeCurry (a,b,c,d,e){
  return a + b + c + d + e;
}

function curry (fn){
  if(fn.length <=1 ) return fn
  // console.log(fn.length)
  const generator = (...args)=>{
    if(args.length == 2){
      // ....
    }
    if(fn.length  === args.length){
      return fn(...args)
    }else{
      return (...args2)=>{
        // 递归
        return generator(...args,...args2)
      }
    }
  }

  return generator;
}
const afterCurry = curry(beforeCurry)

const breakFn = afterCurry(1)(2)
// 过程控制 其他的事情 柯里化的额思想
const result = breakFn(3)(4)(5) // 能够实现beforeCurry的效果
// 柯里化 谐音 颗粒化
console.log(result)

